package com.example.designpattern.structural.adapter.object_based;

import org.junit.Test;

import java.util.concurrent.Callable;

public class Client {
//    @Test
//    public void call() throws InterruptedException {
//        Callable<Integer> callable = new Task();
//        // 这一行无法编译通过
//        Thread thread = new Thread(callable);
//        thread.start();
//        // 等待 1s 保证 thread 执行完成
//        Thread.sleep(1000);
//
//        // 我们会发现，Thread thread = new Thread(callable); 这一行是无法编译通过的，因为 Thread 中需要接收的参数类型是 Runnable。
//        //
//        // 在业务上来说，Runnable 的 run 方法和 Callable 的 call 方法意义是一样的，这里的问题是接口不一致。
//        // 所以我们可以通过接口适配器将接口转换成一致的。
//    }

    @Test
    public void call() throws InterruptedException {
        Callable<Integer> callable = new Task();
        Thread thread = new Thread(new RunnableAdapter(callable));
        thread.start();
        // 等待 1s 保证 thread 执行完成
        Thread.sleep(1000);
    }

}

